package com.example.demo.web;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.net.URL;

/**
 * @author KaiJu 2019/9/27 16:34
 * @program demo
 * @filename com.example.demo.web.Tool
 * @description
 * @lastmodify 2019/9/27 16:34
 */

public class Tool extends JFrame {
    // 定义组件
    // 压缩页多行文本框  多行文本框会根据情况自己调节大小
    private JTextArea jTextArea1;
    // 滚动条
    private JScrollPane jScrollPane11;
    // 解压页多行文本框
    private JTextArea jTextArea2;
    // 滚动条
    private JScrollPane jScrollPane12;
    // 面板
    private JTabbedPane jTabbedPane;

    public Tool() {
        //tab页
        jTabbedPane = new JTabbedPane();

        jTextArea1 = new JTextArea();
        jTextArea1.setLineWrap(true);
        //多行文本框加滚动条
        jScrollPane11 = new JScrollPane(jTextArea1);

        jTextArea2 = new JTextArea();
        jTextArea2.setLineWrap(true);
        //多行文本框加滚动条
        jScrollPane12 = new JScrollPane(jTextArea2);

        // 第一个标签下的JPanel
        JPanel jpanelFirst = new JPanel();
        jpanelFirst.add(jScrollPane11);
        jpanelFirst.setLayout(new GridLayout(1, 1));
        jTabbedPane.addTab("压缩XML", createImageIcon(), jpanelFirst, "first");
//        jTabbedPane.setMnemonicAt(0, KeyEvent.VK_0);// 设置第一个位置的快捷键为0

        // 第二个标签下的JPanel
        JPanel jpanelSecond = new JPanel();
        jpanelSecond.add(jScrollPane12);
        jpanelSecond.setLayout(new GridLayout(1, 1));
        jTabbedPane.addTab("解压XML", createImageIcon(), jpanelSecond, "second");
//        jTabbedPane.setMnemonicAt(1, KeyEvent.VK_1);// 设置第一个位置的快捷键为0

        jTabbedPane.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(final ChangeEvent e) {
                changeState(jTabbedPane.getSelectedIndex(),jTextArea1,jTextArea2);
            }
        });

        // 设置窗体属性,z这里很厉害!!
        //        this.setIconImage((new ImageIcon("images\\3.jpg")).getImage());

        // 布局管理
        this.setLayout(new GridLayout(1, 1));
        // 下面这里就需要定位处理
        this.add(jTabbedPane, BorderLayout.SOUTH);

        this.setSize(800, 500);
        this.setTitle("数据压缩解压");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    private ImageIcon createImageIcon() {
//        String path = "/aa.jpg";
        String path = "aa.jpg";
        URL url = Tool.class.getResource(path);
        if (url == null) {
            System.out.println("the image " + path + " is not exist!");
            return null;
        }
        return new ImageIcon(url);
    }

    public void changeState(int index,JTextArea jTextArea1,JTextArea jTextArea2) {
        if(1 == index){
            //选解压XML 那么，把压缩页面的数据解压放进解压页面
            jTextArea2.setText(CompressUtils.uncompress(jTextArea1.getText()));
        }else if(0 == index){
            //选压缩XML 那么，把解压页面的数据压缩放进压缩页面
            jTextArea1.setText(CompressUtils.compress(jTextArea2.getText()));
        }
    }

    public static void main(String[] args) {
        Tool tool = new Tool();
        tool.setLocationRelativeTo(null);
    }
}
